package com.vans.practice.alghr;

import java.util.Arrays;

/**
 * @Description: 插入排序算法
 * @特点： 稳定
 * @平均时间复杂度： n^2
 * @空间复杂度： 1
 * @note： 对于基本有序的数组最好用
 * @Author elle
 * @Date 2020/10/6 14:49
 *
 **/
public class Insertion {

    public static void main(String[] args) {
        int[] a = {9,6,1,5};
        sort2(a);
        System.out.println(Arrays.toString(a));
    }

    private static void sort(int[] a) {
        for (int i = 1; i < a.length; i++) {
            for (int j = i; j > 0; j--) {
                if (a[j] < a[j-1]) {
                    int temp = a[j];
                    a[j] = a[j-1];
                    a[j-1] = temp;
                }
            }
        }
    }


    /**
     * 写死劳资了
     * @param a
     */
    private static void sort2(int[] a) {
        for (int i = 1; i < a.length; i++) {
            int temp = a[i];
            int j=i-1;
            while (j >= 0 && a[j] > temp) {
                a[j+1] = a[j];
                j--;
            }
            if (i != j) a[j+1] = temp;
        }
    }
}
